package com.iuie.ns.system.beans;

import java.util.ArrayList;
import java.util.List;

import com.iuie.ns.frame.utils.StringUtils;

/**
 * 报表参数
 * @author liujie
 * @date 2018年5月26日下午1:17:05
 */
public abstract class ReportParams {
	
	protected String startTime; // 开始时间
	protected String endTime; // 结束时间
	protected int range;
	
	protected String statisticSize; // 统计粒度
	
	protected String statisticRange; // 统计范围
	
	protected List<String> categories = new ArrayList<>(); // 
	
	protected List<String> queryParams = new ArrayList<>(); // 
	
	protected ReportParams() {
		
	}
	
	public static ReportParams getReportParams(String statisticSize, String statisticRange, String startTime, String endTime) {
		if (StringUtils.equals("01", statisticSize)) {
			return new ReportDayParams(statisticSize, statisticRange, startTime, endTime).init();
		}
		if (StringUtils.equals("02", statisticSize)) { // 按周
			return new ReportWeekParams(statisticSize, statisticRange, startTime, endTime).init();
		}
		if (StringUtils.equals("03", statisticSize)) { // 按月
			return new ReportMonthParams(statisticSize, statisticRange, startTime, endTime).init();
		}
		return null;
	}
	
	/**
	 * 计算并获取报表range, endTime, startTime参数
	 * @return
	 * @date 2018年5月26日下午2:44:25
	 */
	protected abstract ReportParams init();
	
	/**
	 * 获取查询参数
	 * @return
	 * @date 2018年5月26日下午2:50:11
	 */
	public List<String> getQueryParams() {
		return this.queryParams;
	}
	
	/**
	 * 获取坐标轴标签
	 * @return
	 * @date 2018年5月26日下午2:58:51
	 */
	public List<String> getCategories() {
		return this.categories;
	}
	
	public String startTime() {
		return startTime;
	}
	public void startTime(String startTime) {
		this.startTime = startTime;
	}
	public String endTime() {
		return endTime;
	}
	public void endTime(String endTime) {
		this.endTime = endTime;
	}
	public int range() {
		return range;
	}
	public void range(int range) {
		this.range = range;
	}
	public String statisticSize() {
		return statisticSize;
	}
	public void statisticSize(String statisticSize) {
		this.statisticSize = statisticSize;
	}
	public String statisticRange() {
		return statisticRange;
	}
	public void statisticRange(String statisticRange) {
		this.statisticRange = statisticRange;
	}
}
